﻿// 901 字典树例题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <memory.h>
#include <string.h>


using namespace std;
/*
http://oj.daimayuan.top/course/7/problem/537

给你 n个字符串 s1,s2,...,sn和 m组询问，
 每次询问一个字符串是否在 s1,s2,...,sn中出现过，如果出现过则输出 1，否则输出 0。

输入格式
第一行一个整数 n，代表字符串个数。

接下来 n行，每行一个字符串 si。

接下来一行一个整数 m，代表询问组数。

接下来 m行，每行一个字符串，表示一组询问。

输出格式
输出共 m行，每行一个数表示每组询问的答案。

样例输入
4
abcd
cdf
abc
bbc
2
abc
abe
样例输出
1
0
数据规模
对于所有数据，保证 1≤n,m≤50000,1≤字符串长度≤10，字符串均由小写字母构成。
*/


int nxt[500001][26], cnt = 0;
bool isend[500001];
char str[101];
int n, m;


int main()
{
	scanf("%d",&n);
	for (int i = 1; i <= n; i++) {
		scanf("%s",str);
		int len = strlen(str);
		int now = 0;
		for (int j = 0; j < len; j++) {
			int x = str[j] - 'a';
			if (!nxt[now][x])
				nxt[now][x] = ++cnt;
			now = nxt[now][x];
		}
		isend[now] = true;
	}

	scanf("%d",&m);
	for (int i = 1; i <= m; i++) {
		scanf("%s",str);
		int len = strlen(str);
		int now = 0;
		bool ok = true;
		for (int j = 0; j < len&&ok; j++) {
			int x = str[j] - 'a';
			if (!nxt[now][x])
				ok = false;
			else
				now = nxt[now][x];
		}
		if (ok)
			if (!isend[now])
				ok = false;
		printf("%d\n",ok);
	}


	return 0;
}

 